'''
Created on Sep 18, 2011

@author: Almada, Correa, Ventura
'''

import implementacion_t1i as compiler
import os.path as fileMan 
import string

def fromFile(pathCode):
    '''
    Abrimos el archivo y lo leemos a partir de la ruta del mismo recibida por parametro
    '''
    print "Verificando existencia de archivo."
    existe = fileMan.exists(pathCode)
    if existe<>False:
        esArchivo = fileMan.isfile(pathCode)
        code = open(pathCode, "r")
        if esArchivo<>False: 
            validExt = validarExtension(pathCode)
            if validExt==True:
                print "Leyendo el archivo de la ruta especificada."
                text = code.read()
                compilado = compiler.ejecutar(text)
                primerAsterix = string.find(compilado,"#")
                respuesta = compilado[0:primerAsterix]
                detalle = compilado[primerAsterix+1:]
                if(respuesta=="OK"):
                    print "El resultado es:" 
                    print "=>" + detalle
                else:
                    print "Error al realizar la operacion."
                    print "=>" + detalle 
            else:
                print "Error al cargar el archivo de la ruta especificada. Debe ser extension .t1"
                print "Ruta: " + "%s" %(pathCode)
        else:
            print "Error al obtener los datos. La ruta especificada no es un archivo."
            print "Ruta: " + "%s" %(pathCode)
    else:
        print "Error al obtener el archivo. La ruta especificada no es correcta."
        print "Ruta: " + "%s" %(pathCode)
        
    raw_input("->Presione cualquier tecla para salir.")
    
    
def fromStdln():
    print "Bienvenido al compilador dinamico Alcoven."
    print "El compilador ira guardando el codigo ingresado."
    print "Para indicarle al mismo que ha terminado,"
    print "debe de dejar dos lineas seguidas en blanco."
    print "Puede salir del compilador cuando desee escribiendo el comando:"
    print "END"
    lineasVacias=0
    exit=False
    code=""
    line=""
    while lineasVacias<2 and exit<>True:
        line=raw_input("Ingrese nueva linea: ")
        if line=="":
            lineasVacias=lineasVacias+1
        elif line=="END":
            exit=True
        else:
            lineasVacias = 0
            code += line
    if line<>"END":
        compilado = ""
        print ("Code: %s" %(code))
        compilado = compiler.ejecutar(code)
        primerAsterix = string.find(compilado,"#")
        respuesta = compilado[0:primerAsterix]
        detalle = compilado[primerAsterix+1:]
        if(respuesta=="OK"):
            print "El resultado es:" 
            print "=>" + detalle
        else:
            print "Error al realizar la operacion."
            print "=>" + detalle 
    else:
        print "cerrando aplicacion"
        
    raw_input("Presione Enter para cerrar la aplicacion")
        
def validarExtension(path):
    print "Validando extension de archivo."
    ruta=path.split(".")
    index = len(ruta)
    extension = ruta[index-1]
    return extension=="t1"       
            

if __name__ == "__main__":    
    #fromStdln()
    fromFile("../Test/Resources/ArchivosSinComentarios/archivoBien09.t1")
